Telnet


Telnet协议

Telnet协议是TCP/IP协议族的一员,它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用Telnet程序,用它连接到服务器。终端使用者可以在Telnet程序中输入命令,这些命令会在服务器上运行,要开始一个Telnet会话,必须输入用户名和密码来登录服务器。使用端口为53

Telnet服务属于C/S模型的服务,这使得能实现基于Telnet协议的远程登陆。远程登陆是指用户输入Telnet命令,使自己的计算机暂时称为远程主机的一个仿真终端的过程。仿真终端负责把用户输入的每个字符传给主机,再将主机的每个信息回显在屏幕上。

工作原理

Telnet提供了三种基本服务

  1. Telnet定义一个网络虚拟终端,为远程系统提供一个标准接口。客户机程序不需要详细了解远程系统,他们只需要构造使用标准接口的程序
  2. Telnet包括允许客户机和服务器协商选项的机制,它还提供了一组标准选项
  3. Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕显示输出

为了解决异构计算机系统互联中存在的问题,Telnet协议引入网络虚拟终端(Network Virtual Termianl, NVT)的概念,它提供一种专门的键盘定义,用来屏蔽不同计算机对键盘输入的差异性,同时定义客户与远程服务器之间的交互过程,该协议又称“网络虚拟终端协议”,“终端仿真协议”,“远程终端协议”

Telnet使用NVT来定义如何从客户机将控制功能传输到服务器。当用户从本地输入普通字符时,NVT将按原始含义传送,当用户输入快捷键时,NVT将把它转换为特殊的ASCII字符在网络时传输,并到达远程机器后转化为相应的控制命令

讲正常的ASCII字符集与控制命令区分的原因:

  1. 意味着Telnet具有更大的灵活性:它可在客户机与服务器间传输所有可能的ASCII字符以及所有控制功能
  2. 使客户机可以无二义性的指定命令,而不会产生控制功能与普通字符的混乱

Telnet有个缺点:效率不高。因为数据被用户从本地键盘输入后通过操作系统—->客户机程序—-返回—->操作系统—-网络传输—->远程机器—->服务器程序—->操作系统的伪端口入口点—->用户正在运行的应用程序。这个过程的开销巨大,但由于用户键入的速率不高,所以总体可接受


如果本地用户运行了远程机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止输入,则操作系统的缓存区可能因此被占满—->则远程服务器也无法将数据写入伪终端—->导致停止从TCP连接读取数据—->TCP连接的缓冲区最终被占满—->数据流流入此链接—->本地用户失去对远程机器的控制

为此,Telnet协议必须使用外带信号以便于强制服务器读取一个控制命令。

TCP用紧急数据机制实现外带信号,Telnet再添加一个被称为数据标记的保留八位组,再让TCP发送已设置紧急数据比特的报文段通知服务器便可以。作为对紧急信令的回应,服务器将读取并抛弃所有数据,直到找到一个数据标记后返回正常的处理过程


由于Telnet两端的机器和操作系统的异构性,Telnet不可能也不应该严格规定每个Telnet连接的详细配置,否则将大大影响Telnet的适应异构性。

因此Telnet采用选项协商机制来解决这一问题

Telnet工作过程

前提:必须知道远程主机的IP地址或域名;必须知道登录标识与口令

Telnet远程服务分为四个过程:

  1. 本地与远程主机建立TCP连接
  2. 将本地终端输入的用户名和口令以及输入的任何命令或字符以NVT格式传送到远程主机。该过程实际上是本地主机向远程主机发送一个IP数据报
  3. 将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果
  4. 本地终端对远程主机进行一个TCP撤销连接

Telnet命令格式

IAC 命令码 选项码
  1. IAC:命令解释符,每条指令的前缀都是它,固定值255

  2. 命令码:一系列定义……

    对于任何给定的选项,连接的任何一方都可以发送下面4种请求的任意一个

    1. WILL:发送方本身被激活选项
    2. DO:发送方想叫接收端激活选项
    3. WON‘T:发送方本身想禁止选项
    4. DON’T:发送方想让接收端去禁止选项

    所以协商有六种情况:

    | 发送者 | 接收者 | 说明 |
    | ——— | ——— | ———————————————————————— |
    | WILL | DO | 发送方想激活某选项,接收方接受该选项请求 |
    | WILL | DON’T | 发送方想激活某选项,接收方拒绝该请求 |
    | DO | WILL | 发送方希望接收者激活某选项,接收方接受该选项请求 |
    | DO | DON’T | 发送方希望接收者激活某选项,接收方拒绝该请求 |
    | WON’T | DON’T | 发送方希望使某选项无效,接收者必须接受该请求 |
    | DON’T | DON’T | 发送方希望对方使某选项无效,接收者必须接受该请求 |

  3. 选项码:要激活或禁止的选项


E-mail,FTP和Web服务都是建立在Telnet NVT的基础上的